package com.gree.changying.base;

import android.app.Activity;
import android.os.Bundle;

import androidx.annotation.Nullable;

//view层基类
public abstract class BaseView<P extends  BasePresenter,CONTRACT> extends Activity {
    protected P p;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //弱引用
        p = getPresenter();
        //绑定
        p.bindView(this);
    }

    //如果用户退出activity 调用ondestroy 如何还在就是内存泄漏
    // p层与V层断掉，如果Model还在工作，也不会内存泄漏
    //像MVC control层和model在一块，容易内存泄漏

    //让P层做什么需求
    public abstract CONTRACT getContract();
    //从子类中获取具体的契约
    public abstract P getPresenter();

    //如果presenter层出现异常，需要告知view层
    public void error(Exception e){}

    @Override
    protected void onDestroy() {
        super.onDestroy();
        //解除绑定
        p.unBindView();
    }
}
